This section will provide information about the hardware platform we used. We chose one out of the broad spectrum of Arduino devices including the self-titled software framework. We will explain technical details and capabilities and give an idea on how to use this platform.
Additionally we give information about further equipment used for experiments.

\subsection{Arduino}

Arduino is a family of embedded devices featuring an AVR microcontroller. Furthermore, the project offers an integrated development environment with a set of libraries which make it easier to develop embedded software. Programmers have the choice between low-level coding in Assembler or writing the software in C. In the latter case the avr-gcc\footnote{\url{http://www.nongnu.org/avr-libc/}} toolkit is used to translate the source into machine code.

We decided to use the Arduino Uno which is the cheapest above all Arduinos with a price of around \$40.

\begin{figure}[h]
\centering
\includegraphics[width=0.6\textwidth]{img/arduino.jpg}
\caption{Arduino Uno (revision 3) front view.}
\label{fig:arduino-board}
\end{figure}

\paragraph{Technical Details}

The Arduino Uno is based on the ATmega328 8-bit microcontroller. The clock speed is 16MHz with an operating voltage of 5V. Developers can make use of 32KB programmable flash memory and 2KB internal SRAM. It is also possible to save data on a 1KB non-volatile EEPROM.
Besides a USB port and a power jack the board is equipped with 20 data pins. Those are divided into 14 digital and 6 analog where 6 of the digital pins provide \emph{pulse-width modulation} (PWM) output. This is especially useful for our application in IR programming.
For this purpose one also needs timers and interrupts. The underlying Atmega328 offers two 8 bit and one 16 bit timer/counter register which can be adjusted between 15kHz and 16MHz.
Programming the ATmega328 is usually about shifting bits in and between a vast set of different registers. 

\paragraph{Peripheral equipment}
Due to its openness, there is a lot of peripheral equipment available for the Arduino platform. We use an IR receiver and an IR transmitter from DFRobot. Both are powered by the Arduino's on board 5V pins and have another cable to connect to a data pin.
Depending on the presence or absence of infrared light, the receiver directly gives a high or a low digital signal to its data channel which can be tapped by software in regular time intervals.
For the transmitter it is basically the same just the other way around: applying a high signal to the output pin where it is connected to turns on the transmitting IR LED, while at a low signal level the LED is off. Enabling PWM with an appropriate frequency, i.e., 38kHz for the NEC protocol, emitting the modulated signal is done automatically without any further interference.



\subsection{Testbed}

To keep the devices under test in a fixed position we took an ordinary camera tripod and did some modifications as depicted in figure \ref{fig:tripod}. This also allowed us to rotate the device around its x-axis specifying the rotation angle with a tolerance of approximately 2 degrees. We tested several remote controls as seen in the following sections and equipped them with a fresh set of batteries. Indoor experiments were always done under the same light conditions, as far as possible.

\begin{figure}[h]
\centering
\includegraphics[width=0.7\textwidth]{img/tripod.jpg}
\caption{Remote control tripod with angle blade.}
\label{fig:tripod}
\end{figure}	

